package com.example.jnademo;

import com.sun.jna.Library;
import com.sun.jna.Native;

/**
 * @author: zehao.song
 */
//继承Library，用于加载库文件
public interface Clibrary extends Library {

    // 调用linux下面的so文件,注意，这里只要写test就可以了，不要写libtest，也不要加后缀
//    Clibrary INSTANCE = (Clibrary) Native.loadLibrary("test", Clibrary.class);
    // [Native.synchronizedLibrary] 阻止多线程同时访问本地代码
    String os = System.getProperty("os.name");  // 获取当前操作系统的类型
    int beginIndex = os != null && os.startsWith("Windows") ? 1 : 0;// windows操作系统为1 否则为0

    Clibrary INSTANCE = (Clibrary) Native.synchronizedLibrary(
            (Clibrary) Native.loadLibrary(
                    Clibrary.class.getResource("/libtest.so")
                            .getPath()
                            .substring(beginIndex)
                    , Clibrary.class
            )
    );

    // 此方法为so库中的c语言函数 int add(int a,int b);
    int add(int a, int b);

}
